<?php


namespace App\Http\Controllers\GarbageCollect;

use App\Models\Garbage\GarbageInteraction;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Database\QueryException;
use Validator;

/**
 * @group 垃圾分类->监督反馈->商机对接
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */
class GarbageInteractionController extends Controller
{

    /**
     * 信息展示 bug 筛选负责人 原型图并没有提供负责人在哪里添加
     *
     * @bodyParam search string optional 搜索手机号(模糊查询)
     * @bodyParam username string optional 搜索反馈人姓名(模糊查询)
     *
     * @queryParam no 商机编号
     * @queryParam desc 备注信息
     * @queryParam res 处理结果
     * @queryParam status 处理状态 1. 待联系 2. 已联系
     * @queryParam user_id 留言人微信信息
     * @queryParam name 预留人称呼
     * @queryParam phone 预留人手机号
     * @queryParam gender 预留人性别 性别 0 未知 1男 2女 默认0
     * @queryParam email 预留人电子邮箱
     */
    public function index(Request $request)
    {
        $query = GarbageInteraction::with('user')->where(function ($q) use($request){
            $request->has('search') && $q->where('phone','LIKE',"%{$request->get('search')}%");
            $request->has('username') && $q->where('name','LIKE',"%{$request->get('username')}%");
        });
        return response()->json(encodeMsg(pageQuery($query,$request),200),200);
    }


    /**
     * 垃圾分类->监督反馈->跟进信息显示
     *
     * @queryParam no 商机编号
     * @queryParam desc 备注信息
     * @queryParam res 处理结果
     * @queryParam status 处理状态 1. 待联系 2. 已联系
     * @queryParam user_id 留言人
     * @queryParam user 用户信息
     * @queryParam follow 信息跟踪
     *
     */
    public function show($pk)
    {
        $data = GarbageInteraction::with('follows')->with('user')->find($pk);
        if ($data == []) {
            return response()->json(encodeMsg(["message" => "没有该信息"],404), 404);
        } else {
            return response()->json(encodeMsg($data,200), 200);
        }
    }

    /**
     * 信息更新
     *
     * @queryParam no 商机编号
     * @queryParam desc 备注信息
     * @queryParam res 处理结果
     * @queryParam status 处理状态 1. 待联系 2. 已联系
     * @queryParam user_id 留言人
     * @queryParam user 用户信息
     *
     * @bodyParam desc string optional 备注信息
     * @bodyParam res string optional 处理结果
     * @bodyParam status int optional 处理状态 1. 待联系 2. 已联系
     * @bodyParam gender int optional 留言人性别
     *
     */
    public function update(Request $request, $pk)
    {
        $e = genValidate();
        $validator = Validator::make($request->all(),$e);
        if($validator->fails()){
            return response()->json(encodeMsg($validator->errors()->messages(),400),400);
        }

        $data = GarbageInteraction::find($pk);
        try {
            $data->update($request->all());
            return response()->json(encodeMsg($data,200), 200);
        } catch (QueryException $e) {
            return response()->json(encodeMsg(["message" => "服务器出错"],500),500);
        }
    }

    /**
     * 信息删除
     */
    public function destroy($pk)
    {
        $data = GarbageInteraction::find($pk);
        $data->delete();
        return response()->json(encodeMsg(["message" => "删除成功"],204), 204);
    }
}
